Method for preventing read-disturb happened in non-volatile memory and controller thereof

ABSTRACT

A method for preventing read-disturb happened in non-volatile memory and a controller thereof are disclosed. The non-volatile memory includes a plurality of blocks, and each block includes a plurality of pages. The method includes storing a program code executed by a controller of the non-volatile memory storage device for controlling the non-volatile memory storage device into at least a first block of the blocks; and copying the program code stored in the first block into at least a second block of the blocks when power is supplied to the non-volatile memory storage device.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a divisional of and claims the priority benefit ofU.S. application Ser. No. 12/025,475, filed on Feb. 4, 2008, nowallowed, which claims the priority benefit of Taiwan application serialno. 96151575, filed on Dec. 31, 2007. The entirety of each of theabove-mentioned patent applications is hereby incorporated by referenceherein and made a part of this specification.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a read technique for a storage media.More particularly, the present invention relates to a method forpreventing read-disturb happened in a non-volatile memory and acontroller thereof.

2. Description of Related Art

Recently, with quick development of digital cameras, camera cell phones,MP3s and MP4s, requirement for storage media thereof is increasedaccordingly. In view of all the present storage media, since a flashmemory has features of non-volatile, power saving, small size andnon-mechanical structure etc., it is suitable for being built within theaforementioned portable multimedia devices. Moreover, since demanding ofexternal products such as small memory cards and flash drives isrelatively great, improving of storage volume and reliability of theflash memory becomes a major subject to various flash memorymanufacturers.

Generally, the flash memories are grouped into two types according tofabrication precision thereof. It is known that the flash memoriesfabricated based on low fabrication precision are referred to as singlelevel cell (SLC) flash memories, and the flash memories fabricated basedon high fabrication precision are referred to as multi level cell (MLC)flash memories. Wherein, memory volume of the MLC flash memory is higherthan that of the SLC flash memory, though utilization reliability of theMLC flash memory is lower than that of the SLC flash memory.

However, if data stored within a same block of the MLC flash memory orthe SLC flash memory is repeatedly read, for example, if read times ofthe data is between a hundred thousand times and a million times,reading error of the data may be occurred, or even the data storedwithin the block may be lost or becomes abnormal, and such phenomenon isreferred to as “read-disturb” to those skilled in the art. Therefore,various manufacturers now devote to develop techniques for preventingsuch read-disturb phenomenon, so as to effectively suppress a chance ofread-disturb.

SUMMARY OF THE INVENTION

Accordingly, the present invention is directed to a method forpreventing read-disturb happened in a non-volatile memory and acontroller thereof, by which chance of read-disturb may be effectivelysuppressed, and data stored within the non-volatile memory may becorrectly read.

The present invention provides a method for preventing read-disturbhappened in a non-volatile memory. The method is suitable for anon-volatile memory storage device, wherein the non-volatile memorycomprises a plurality of blocks, and the blocks are grouped into atleast a data group and a spare group, each block includes a plurality ofpages. The method includes the following steps. First, read times for atleast a first block of the blocks in the data group is recorded. Next,when the read times of the first block is greater than a predeterminedvalue, data originally stored in the first block is renewed.

In an embodiment of the present invention, the step of recording theread times of the first block includes recording the read times of thefirst block by using a read times table, wherein the read times tablehas a first counting value corresponding to the first block, and thefirst counting value represents the read times of the first block.

In another embodiment of the present invention, the step of recordingthe read times of the first block includes recording read times of atleast a first page within the pages of the first block by using a readtimes table, wherein the read times table has a first counting valuecorresponding to the first page, and the first counting value representsthe read times of the first block.

In an embodiment of the present invention, the step of renewing the dataoriginally stored in the first block includes the following steps.First, the data originally stored in the first block is copied into asecond block in the spare group, wherein the read times table furtherhas a second counting value corresponding to the second block, and thesecond counting value represents read times of the second block. Next,the first block is substituted with the second block, and the firstcounting value is renewed.

In an embodiment of the present invention, the step of renewing the dataoriginally stored in the first block further includes the followingsteps. First, data originally stored in at least a third block adjacentto the first block is copied into a fourth block in the spare group,wherein the read times table further has a third counting value and afourth counting value respectively corresponding to the third block andthe fourth block, and the third counting value and the fourth countingvalue respectively represent read times of the third block and thefourth block. Next, the third block is substituted with the fourthblock, and the third counting value is renewed.

In another embodiment of the present invention, the step of renewing thedata originally stored in the first block includes the following steps.First, the data originally stored in the first block is copied into asecond block in the spare group, wherein the read times table furtherhas a second counting value corresponding to at least a second pagewithin the pages of the second block, and the second counting valuerepresents read times of the second block. Next, the first block issubstituted with the second block, and the first counting value isrenewed.

In another embodiment of the present invention, the step of renewing thedata originally stored in the first block further includes the followingsteps. First, data originally stored in at least a third block adjacentto the first block is copied into a fourth block in the spare group,wherein the read times table further has a third counting valuecorresponding to at least a third page within the pages of the thirdblock and a fourth counting value corresponding to at least a fourthpage within the pages of the fourth block, and the third counting valueand the fourth counting value respectively represent read times of thethird block and the fourth block. Next, the third block is substitutedwith the fourth block, and the third counting value is renewed.

In still another embodiment of the present invention, the step ofrenewing the data originally stored in the first block includes thefollowing steps. First, the data originally stored in the first block isread, and is temporarily stored into a buffer memory of the controllerof the non-volatile memory storage device. Next, the first block iserased. Next, the data temporarily stored in the buffer memory which isoriginally stored in the first block is written back to the first block.Finally, the first counting value is renewed.

In yet another embodiment of the present invention, the step of renewingthe data originally stored in the first block further includes thefollowing steps. First, data originally stored in at least a secondblock adjacent to the first block is read, and is temporarily storedinto the buffer memory, wherein the read times table further has asecond counting value corresponding to the second block, and the secondcounting value represents read times of the second block. Next, thesecond block is erased. Next, the data temporarily stored in the buffermemory which is originally stored in the second block is written back tothe second block. Finally, the second counting value is renewed.

The present invention provides a method for preventing read-disturbhappened in a non-volatile memory. The method is suitable for anon-volatile memory storage device, wherein the non-volatile memorycomprises a plurality of blocks, and each block includes a plurality ofpages. The method includes the following steps. First, a program codeexecuted by a controller of the non-volatile memory storage device forcontrolling the non-volatile memory storage device is stored into atleast a first block of the blocks. Next, when power is supplied to thenon-volatile memory storage device, the program code stored in the firstblock is copied into at least a second block of the blocks.

In an embodiment of the present invention, the method for preventingread-disturb happened in a non-volatile memory submitted by the presentinvention further includes recording read times of the second block, andrenewing the program code stored in the second block when the read timesof the second block is greater than a predetermined value.

In an embodiment of the present invention, the step of recording theread times of the second block includes recording the read times of thesecond block by using a read times table, wherein the read times tablehas a first counting value corresponding to the second block, and thefirst counting value represents the read times of the second block.

In another embodiment of the present invention, the step of recordingthe read times of the second block includes recording read times of atleast a first page within the pages of the second block by using a readtimes table, wherein the read times table has a first counting valuecorresponding to the first page, and the first counting value representsread times of the second block.

In an embodiment of the present invention, the step of renewing theprogram code stored in the second block includes the following steps.First, the program code stored in the second block is copied into atleast a third block of the blocks, wherein the read times table furtherhas a second counting value corresponding to the third block, and thesecond counting value represents read times of the third block. Next,the second block is substituted with the third block, and the firstcounting value is renewed.

In an embodiment of the present invention, the step of renewing theprogram code stored in the second block further includes the followingsteps. First, data originally stored in at least a fourth block adjacentto the second block is copied into a fifth block of the blocks, whereinthe read times table further has a third counting value and a fourthcounting value respectively corresponding to the fourth block and thefifth block, and the third counting value and the fourth counting valuerespectively represent read times of the fourth block and the fifthblock. Next, the fourth block is substituted with the fifth block, andthe third counting value is renewed.

In another embodiment of the present invention, the step of renewing theprogram code stored in the second block includes the following steps.First, the program code stored in the second block is copied into atleast a third block of the blocks, wherein the read times table furtherhas a second counting value corresponding to at least a second pagewithin the pages of the third block, and the second counting valuerepresents read times of the third block. Next, the second block issubstituted with the third block, and the first counting value isrenewed.

In another embodiment of the present invention, the step of renewing theprogram code stored in the second block further includes the followingsteps. First, data originally stored in at least a fourth block adjacentto the second block is copied into a fifth block of the blocks, whereinthe read times table further has a third counting value corresponding toat least a third page within the pages of the fourth block and a fourthcounting value corresponding to at least a fourth page within the pagesof the fifth block, and the third counting value and the fourth countingvalue respectively represent read times of the fourth block and thefifth block. Next, the fourth block is substituted with the fifth block,and the third counting value is renewed.

In still another embodiment of the present invention, the step ofrenewing the program code stored in the second block includes thefollowing steps. First, the program code stored in the second block isread, and is temporarily stored into a buffer memory of the controller.Next, the second block is erased. Next, the program code temporarilystored in the buffer memory which is originally stored in the secondblock is written back to the second block. Finally, the first countingvalue is renewed.

In yet another embodiment of the present invention, the step of renewingthe program code stored in the second block further includes thefollowing steps. First, data originally stored in at least a third blockadjacent to the second block is read, and is temporarily stored into thebuffer memory, wherein the read times table further has a secondcounting value corresponding to the third block, and the second countingvalue represents read times of the third block. Next, the third block iserased. Next, the data temporarily stored in the buffer memory which isoriginally stored in the third block is written back to the third block.Finally, the second counting value is renewed.

In an embodiment of the present invention, the read times table isstored in internal or external of the non-volatile memory.

In an embodiment of the present invention, the non-volatile memory is asingle level cell (SLC) flash memory or a multi level cell (MLC) flashmemory.

The present invention provides a controller, which is suitable for anon-volatile memory storage device. The controller includes a microprocessing unit, a non-volatile memory interface, a buffer memory and amemory management module. The micro processing unit is used forcontrolling a whole operation of the controller. The non-volatile memoryinterface is electrically coupled to the micro processing unit, and isused for accessing the non-volatile memory, wherein the non-volatilememory includes a plurality of blocks, and the blocks are grouped intoat least a data group and a spare group. The buffer memory iselectrically coupled to the micro processing unit, and is used fortemporarily storing data.

The memory management module is electrically coupled to the microprocessing unit, and is used for managing the non-volatile memory,wherein the memory management module applies a method for preventingread-disturb happened in the non-volatile memory. The method includesthe following steps. First, read times for at least a first block of theblocks within the data group is recorded. Next, when the read times ofthe first block is greater than a predetermined value, data originallystored in the first block is renewed.

In an embodiment of the present invention, the step of recording theread times of the first block includes recording the read times of thefirst block by using a read times table, wherein the read times tablehas a first counting value corresponding to the first block, and thefirst counting value represents the read times of the first block.

In an embodiment of the present invention, the step of renewing the dataoriginally stored in the first block includes the following steps.First, the data originally stored in the first block is written backinto the first block, and the first counting value is renewed;alternatively, the data originally stored in the first block is copiedinto a second block within the spare group, and the first block issubstituted with the second block, and then the first counting value isrenewed. The read times table further has a second counting valuecorresponding to the second block, and the second counting valuerepresents read times of the second block.

In an embodiment of the present invention, the step of renewing the dataoriginally stored in the first block further includes simultaneouslyrenewing data originally stored in at least a third block adjacent tothe first block, wherein the read times table further has a thirdcounting value corresponding to the third block, and the third countingvalue represents read times of the third block.

The present invention provides a controller, which is suitable for anon-volatile memory storage device. The controller includes a microprocessing unit, a non-volatile memory interface, a buffer memory and amemory management module. The micro processing unit is used forcontrolling a whole operation of the controller. The non-volatile memoryinterface is electrically coupled to the micro processing unit, and isused for accessing the non-volatile memory, wherein the non-volatilememory includes a plurality of blocks. The buffer memory is electricallycoupled to the micro processing unit, and is used for temporarilystoring data.

The memory management module is electrically coupled to the microprocessing unit, and is used for managing the non-volatile memory,wherein the memory management module applies a method for preventingread-disturb happened in the non-volatile memory. The method includesthe following steps. First, a program code executed by the controllerfor controlling the non-volatile memory storage device is stored into atleast a first block of the blocks. Next, when power is supplied to thenon-volatile memory storage device, the program code stored in the firstblock is copied into at least a second block of the blocks.

In an embodiment of the present invention, the method for preventingread-disturb happened in a non-volatile memory executed by the memorymanagement module further includes recording read times of the secondblock, and renewing the program code stored in the second block when theread times of the second block is greater than a predetermined value.

In an embodiment of the present invention, the step of recording theread times of the second block includes recording the read times of thesecond block by using a read times table, wherein the read times tablehas a first counting value corresponding to the second block, and thefirst counting value represents the read times of the second block.

In an embodiment of the present invention, the step of renewing theprogram code stored in the second block includes writing the programcode stored in the second block back to the second block, and renewingthe first counting value; alternatively, copying the program code storedin the second block into at least a third block of the blocks, andsubstituting the second block with the third block, and then renewingthe first counting value, wherein the read times table further has asecond counting value corresponding to the third block, and the secondcounting value represents read times of the third block.

In an embodiment of the present invention, the step of renewing theprogram code stored in the second block further includes simultaneouslyrenewing data originally stored in at least a fourth block adjacent tothe second block, wherein the read times table further has a thirdcounting value corresponding to the fourth block, and the third countingvalue represents read times of the fourth block.

To prevent the read-disturb, in the method for preventing read-disturbhappened in a non-volatile memory provided by the present invention, aread times table may be used for recording read times of at leastone/each block or page within the non-volatile memory. Accordingly, whenthe read times of a certain block or a certain page within thenon-volatile memory is greater than a predetermined value, data storedin this block or the block where the page belongs to is then renewed.Therefore, according to the method for preventing read-disturb happenedin a non-volatile memory provided by the present invention, not onlychances of read-disturb is effectively suppressed, but also all datastored in the non-volatile memory may be correctly read.

In order to make the aforementioned and other objects, features andadvantages of the present invention comprehensible, a preferredembodiment accompanied with figures is described in detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a system block diagram illustrating a non-volatile memorystorage device.

FIG. 2 is a flowchart illustrating a method for preventing read-disturbof a non-volatile memory according to an embodiment of the presentinvention.

FIG. 3 is a flowchart illustrating a method for preventing read-disturbof the non-volatile memory according to another embodiment of thepresent invention.

FIG. 4 is a schematic diagram illustrating application devices of amethod for preventing read-disturb of the non-volatile memory of thepresent invention.

DESCRIPTION OF EMBODIMENTS

A technique function to be achieved by the present invention is toeffectively suppress a chance of read-disturb, so as to correctly readall data stored in the non-volatile memory. In the following content,technique features and technique functions to be achieved by the presentinvention are described in detail for those skilled in the art.

FIG. 1 is a system block diagram illustrating a non-volatile memorystorage device 100. Referring to FIG. 1, the non-volatile memory storagedevice 100 generally includes a controller 101 and a non-volatile memory103. The controller 101 is used for controlling a whole operation of thenon-volatile memory storage device 100, for example, operations such asdata storage, data reading or data erasing etc. In the presentembodiment, the controller 101 includes a memory management module 101a, a non-volatile memory interface 101 b, a buffer memory 101 c and amicro processing unit 101 d. The memory management module 101 a is usedfor managing the non-volatile memory 103, for example, executing themethod for preventing read-disturb happened in the non-volatile memoryprovided by the present invention, managing damaged blocks, andmaintaining a mapping table etc.

The non-volatile memory interface 101 b is used for accessing thenon-volatile memory 103. Namely, data to be written into thenon-volatile memory 103 from an external host (not shown, which may beany data storage system, such as a computer, a digital camera, a videocamera, a communication device, an audio player or a video player etc.)is first transformed into a data format which may be accepted by thenon-volatile memory 103 via the non-volatile memory interface 101 b.

The buffer memory 101 c is used for temporarily storing system data (forexample a mapping table) or data to be read or written by the host. Inthe present embodiment, the buffer memory 101 c is a static randomaccess memory (SRAM). However, it should be understood that the presentinvention is not limited thereto, and a dynamic random access memory(DRAM), a magnetic random access memory (MRAM), a phase-change randomaccess memory (PRAM) or other suitable memories may also be applied inthe present invention. The micro processing unit 101 d is used forcontrolling a whole operation of the controller 101.

In the present embodiment, the controller 101 further includes a hosttransmission interface 101 e, an error correction module 101 f, a powermanagement module 101 g and a program memory 101 h. The hosttransmission interface 101 e is used for communicating with the host.The host transmission interface 101 c may be a USB interface, anIEEE1394 interface, a SATA interface, a PCI express interface, a SASinterface, a MS interface, a MMC interface, a SD interface, a CFinterface or an IDE interface.

The error correction module 101 f is used for calculating an errorcorrecting code, so as to check and correct data to be read or writtenby the host. The power management module 101 g is used for managing apower supply of the non-volatile memory storage device 100. The programmemory 101 h is used for storing a program code executed by thecontroller 101 for controlling the non-volatile memory storage device100.

The non-volatile memory 103 is used for storing data. In the presentembodiment, the non-volatile memory 103 is a flash memory which may be asingle level cell (SLC) flash memory or a multi level cell (MLC) flashmemory.

It is known that the non-volatile memory is generally divided into aplurality of physical blocks, and each physical block is generallydivided into a plurality of pages. In the present embodiment, thenon-volatile memory 103 has the plurality of blocks B₀˜B_(n)(arrangement type thereof is not limited to that shown in FIG. 1), andeach of the blocks B₀˜B_(n) may include the plurality of pages P₀˜P_(m)(arrangement type thereof is not limited to that shown in FIG. 1) whichis the same to that of the block B₀.

Generally, each of the pages includes a data memory area D and a dataredundant area R. The data memory area D is used for storing user data,and the data redundant area R is used for storing the system data, forexample, the above error correction code (ECC).

To effectively manage the non-volatile memory 103, the blocks B₀˜B_(n)of the non-volatile memory 103 are logically grouped into a systemgroup, a data group and a spare group. Generally, the blocks belonged tothe data group within the non-volatile memory 103 occupy more than 90%of all the blocks B₀˜B_(n), and the rest blocks belong to the systemgroup and the spare group. Wherein, the blocks within the system groupare mainly used for recording the system data such as area number, blocknumber of each area, page number of each block, logical-physical mappingtable etc. related to the non-volatile memory 103.

The blocks within the data group are mainly used for storing the userdata. The blocks within the spare group are mainly used for substitutingthe blocks within the data group. Therefore, the blocks within the sparegroup are empty blocks, namely, no data is recorded therein or only datamarked to be invalid are stored therein.

Moreover, to effectively suppress the read-disturb occurred duringrepeat reading of the non-volatile memory 103, the method for preventingread-disturb happened in the non-volatile memory provided by the presentinvention will be described in detailed below for those skilled in theart.

FIG. 2 is a flowchart illustrating a method for preventing read-disturbof a non-volatile memory according to an embodiment of the presentinvention. Referring to FIG. 1 and FIG. 2, the method for preventingread-disturb happened in a non-volatile memory of the present inventionincludes the following steps. First, in step S201, read times of atleast a first block of the blocks within the data group is recorded.

In the present invention, a read times table is applied for recordingthe read times of each block within the data group, wherein the readtimes table may be stored in the buffer memory 101 c, though the presentinvention is not limited thereby. Moreover, the controller 101 maycontrol a counter (not shown) therein to count the read times of eachblock within the data group, and may record the read times of each blockwithin the data group into the read times table. Therefore, the readtimes table may contain a counting value corresponding to each blockwithin the data group, and the counting values respectively representthe read times of each block within the data group. For example, whenthe counting value corresponding to the read times of the block B₀within the data group that is recorded in the read times table is 100,it represents data stored in the block B₀ has been read for 100 times.

Accordingly, in the present embodiment, the read times table records theread times of the first block, and the read times table has a firstcounting value corresponding to the first block, wherein the firstcounting value represents the read times of the first block.

It should be noted that during operation of the non-volatile memorystorage device 100, each time when a certain block within the data groupis read, content recorded within the read times table of the buffermemory 105 is then continually renewed under control of the controller101, and after operation of the non-volatile memory storage device 100is completed, or after every several operation of the non-volatilememory storage device 100, the content recorded in the read times tableis then recorded into at least one block within the system group undercontrol of the controller 101, or is correspondingly recorded into thedata redundant area R of the read block. Such backup operation may avoidloss of the content recorded in the renewed read times table caused bysudden power-off of the non-volatile memory storage device 100.

As described above, the read times table may be stored to external ofthe non-volatile memory 103 (i.e. stored in the buffer memory 105 of thecontroller 101), and may also be stored into the non-volatile memory 103(i.e. stored in at least one block within the system group or stored inthe data redundant area R of the read block), or may even be storedindependently in a system of the controller 101. Moreover, a countingdirection of the counter within the controller 101 may be designed to beincreasing or decreasing.

Next, in step S203, when the read times of the first block within thedata group is greater than a predetermined value, data originally storedin the first block is renewed. In the present invention, assuming whenthe read times of the first block (for example, the block B₀) within thedata group is greater than the predetermined value (i.e. the read timeswhich may cause the read-disturb, for example, one million times, thoughthe present invention is not limited thereto), the controller 101 maycopy the data originally stored in the first block B₀ into a secondblock (for example a block B_(n-1)) within the spare group, and such aprocess is the process of renewing the data originally stored in thefirst block described in the step S203. Whereas, when the read times ofthe first block B₀ within the data group is less than the predeterminedvalue, the data originally stored in the first block B₀ is not renewed.

In the present embodiment, the read times table further has a secondcounting value corresponding to the second block B_(n-1), and the secondcounting value represents read times of the second block B_(n-1).

Next, the controller 101 modifies a mapping relation of thelogical-physical mapping table for substituting the first block B₀ withthe second block B_(n-1), and renews the first counting value recordingthe read times of the first block B₀ in the read times table. Forexample, the first counting value recording the read times of the firstblock B₀ is reset to 0 (i.e. reset to 0 from the one million). It shouldbe noted that excessive renewing of the data may influence a performanceof the non-volatile memory storage device 100, though if renewing of thedata is not performed for a relatively long time, risk of data readingerror is improved, and therefore the predetermined value may be definedto be a reasonable value according to a plurality of experiments, forexample, may be defined to be different values between ten thousandtimes and ten million times according to different design requirements.

As described above, when the read times of the first block B₀ is greaterthan one million times, the data originally stored in the first block B₀is then copied into the second block B_(n-1) within the spare groupunder control of the controller 101, and the mapping relation in thelogical-physical mapping table is modified for substituting the firstblock B₀ with the second block B_(n-1). Therefore, according to themethod for preventing read-disturb happened in the non-volatile memoryof the present invention, read-disturb of the non-volatile memory 103happened when a specific block therein is repeatedly read may beeffectively suppressed.

However, it should be noted that influenced by fabrication factors, asthe read times of the first block B₀ is increased, data originallystored in a third block (for example, a block B₁) adjacent to the firstblock B₀ may be indirectly influenced. Therefore, when the read times ofthe first block B₀ is greater than the million times, besides the dataoriginally stored in the first block B₀ is copied into the second blockB_(n-1) within the spare group under control of the controller 101, dataoriginally stored in the third block B₁ is also copied into a fourthblock (for example, a block B_(n)) within the spare group under controlof the controller 101.

In the present embodiment, the read times table further has a thirdcounting value and a fourth counting value corresponding to the thirdblock B₁ and the fourth block B_(n), and the third counting value andthe fourth counting value respectively represent read times of the thirdblock B₁ and the fourth block B_(n). Next, the controller 101 thenmodifies the mapping relation of the logical-physical mapping table forsubstituting the third block B₁ with the fourth block B_(n), and renewsthe third counting value recording the read times of the third block B₁in the read times table.

As described above, when the read times of a certain block within thedata group reaches the predetermined value, according to the method forpreventing read-disturb happened in the non-volatile memory of thepresent invention, not only data stored in the block with read timesbeing greater than the predetermined value is renewed, but also datastored in a block (for example, a left or right block/an upper or alower block) adjacent to the block with read times being greater thanthe predetermined value is also renewed. Therefore, according to themethod for preventing read-disturb of the non-volatile memory of thepresent embodiment, all data stored in the non-volatile memory 103 maybe correctly read.

Moreover, the present invention is not limited to the aforementionedembodiment. In another embodiment of the present invention, assumingwhen the read times of the first block (for example, the block B₀)within the data group is greater than the predetermined value (i.e. theread times which may cause the read-disturb, for example, one milliontimes, though the present invention is not limited thereto), thecontroller 101 may first read the data originally stored in the firstblock B₀, and then temporarily stores the data into the buffer memory101 c.

Next, all data stored in the first block B₀ are erased by the controller101. Thereafter, the data temporarily stored in the buffer memory whichis originally stored in the first block B₀ is written back to the firstblock B₀ under control of the controller 101, and the first countingvalue recording the read times of the first block B₀ within the readtimes table is renewed. Such a process is the process of renewing thedata originally stored in the first block described in the step S203.However, in the present embodiment, the mapping relation of thelogical-physical mapping table is unnecessary to be modified by thecontroller 101.

The aforementioned data renewing refers to an action of rewriting dataoriginally stored in a certain block (i.e. erase the certain block firstand then write data originally stored in the certain block back intoitself), wherein the data may be written into a different block or theoriginal block. Therefore, as long as the data originally stored in theblock is re-written, possibility of read-disturb of this block is thengreatly reduced, and when the data originally stored in the block isre-written, the counting value recording the read times of the blockwithin the read times table is then reset (for example, reset to 0).

Similarly, influenced by the fabrication factors, as the read times ofthe first block B₀ is increased, data originally stored in at leas asecond block (for example, a block B₁) adjacent to the first block B₀may be indirectly influenced. Therefore, when the read times of thefirst block B₀ is greater than the million times, besides the dataoriginally stored in the first block B₀ is read and temporarily storedinto the buffer memory 101 c under control of the controller 101, dataoriginally stored in the second block B₁ is also read and temporarilystored into the buffer memory 101 c under control of the controller 101.

Next, all data stored in the second block B₁ are erased by thecontroller 101. Thereafter, the data temporarily stored in the buffermemory 101 c which is originally stored in the second block B₁ iswritten back to the second block B₁ under control of the controller 101,and the second counting value recording the read times of the secondblock B₁ within the read times table is renewed. Therefore, according tothe method for preventing read-disturb happened in the non-volatilememory of the present embodiment, all data stored in the non-volatilememory 103 may also be correctly read.

Accordingly, it should be noted that the minimum unit that records theread times of each block within the data group is the whole block,though the present invention is not limited thereto. In anotherembodiment of the present invention; the read times of each block withinthe data group are also recorded into the read times table, though thecounter may count the read times of each page within each block of thedata group under control of the controller 101, and as long as any pagewithin a certain block is read, the block that the page belongs to isregarded to be read once.

For example, when data stored in a first page (for example a page P₀)within a first block (for example the block B₀) is read, the firstcounting value recording the read times of the first block B₀ within theread times table is then accumulated once or decreased once; and whendata stored in a second page (for example a page P₁) within a secondblock (for example the block B₁) is read, the first counting valuerecording the read times of the second block B₁ within the read timestable is then accumulated once or decreased once.

Similarly, when data stored in a third page (for example a page P₂)within a third block (for example the block B₂) is read, a thirdcounting value recording the read times of the third block B₂ within theread times table is then accumulated once or decreased once; and whendata stored in a fourth page (for example a page P₃) within a fourthblock (for example the block B₃) is read, a fourth counting valuerecording the read times of the fourth block B₃ within the read timestable is then accumulated once or decreased once. The rest may bededuced by analogy.

Certainly, to implement this embodiment, the read times table contains aplurality of counting values corresponding to each page within eachblock of the data group, and the counting values respectively representthe read times of each page within each block of the data group.Moreover, in the present embodiment, process of renewing data stored inany block is approximately the same to that disclosed in theaforementioned embodiment, and therefore detailed description thereof isnot repeated.

According to another aspect, a program code executed by the controller101 for controlling the non-volatile memory storage device 100 isgenerally stored in the program memory 101 h. However, in an embodimentof the present invention, the program code executed by the controller101 for controlling the non-volatile memory storage device 100 is storedin at least one block within the non-volatile memory 103. Therefore, theprogram code stored in the block will be frequently read duringoperation of the non-volatile memory storage device 100, and afterfrequent reading of the program code stored in the block, read-disturbmay be occurred. Thus, the present invention provides another method forpreventing read-disturb happened in the non-volatile memory forreference of those skilled in the art.

FIG. 3 is a flowchart illustrating a method for preventing read-disturbof the non-volatile memory according to another embodiment of thepresent invention. Referring to FIG. 1 and FIG. 3, the method forpreventing read-disturb happened in the non-volatile memory of thepresent embodiment is suitable for the non-volatile memory storagedevice 100, in which the non-volatile memory 103 includes a plurality ofthe blocks, and each block includes a plurality of the pages, and themethod is also executed by the memory management module 101 a, and stepsof the method includes the following steps. First, in step S301, aprogram code executed by the controller 101 of the non-volatile memorystorage device 100 for controlling the non-volatile memory storagedevice 100 is stored into at least a first block of all the blocks ofthe non-volatile memory 103. Next, in step S303, when power is suppliedto the non-volatile memory storage device 100, the program code storedin the first block is copied into at least a second block of all theblocks of the non-volatile memory 103.

In the present embodiment, after the program code stored in the firstblock is copied into at least the second block of all the blocks of thenon-volatile memory 103, the memory management module 101 a furtherrecords the read times of the second block, and when the read times ofthe second block is greater than a predetermined value, the program codestored in the second block is then renewed.

Accordingly, since the program code executed by the controller 101 forcontrolling the non-volatile memory storage device 100 is stored into atleast one block within the non-volatile memory 103, the program memory101 h within the controller 101 then may be omitted, so as to save acost of the controller 101. Moreover, when the power is supplied to thenon-volatile memory storage device 100, the program code stored in oneblock is copied into another block under control of the controller 101.Therefore, the block storing the copied program code may substitute theblock originally storing the program code. By such means, read-disturbof the block originally storing the program code is avoided, and chancesof occurring of errors, abnormity and loss of the program code may begreatly reduced.

In addition, since the block storing the copied program codes may befrequently accessed during operation of the non-volatile memory storagedevice 100, according to the spirit of the present invention, when theread times of the block storing the copied program codes is greater thana predetermined value (i.e. the read times which may cause theread-disturb, for example, one million times, though the presentinvention is not limited thereto), renewing of the block storing thecopied program codes is similar to that of the aforementionedembodiment, and therefore detailed description thereof is not repeated.

Therefore, the method for preventing the read-disturb of thenon-volatile memory provided by the present invention may not onlyguarantee reading correctness of all data stored in the non-volatilememory 103, but may also guarantee an integrity of the program codeexecuted by the controller 101 for controlling the non-volatile memorystorage device 100, which is stored in the non-volatile memory 103.

Accordingly, the method for preventing the read-disturb happened in thenon-volatile memory of the present invention is suitable for variousdevices using the non-volatile memory as the storage media, such as aUSB flash drive 402, and an SD card 404 a, an MMC card 404 b, a CF card404 c and a memory stick 404 d used in a digital camera (video camera)404, and a hard drive 406 etc shown in FIG. 4, wherein the hard drive406 especially requires a better method for preventing the read-disturbof the non-volatile memory, so as to suppress a chance of theread-disturb.

In summary, in the method for preventing read-disturb of a non-volatilememory provided by the present invention, the read times table may beused for recording read times of each block or each page within thenon-volatile memory. Accordingly, when the read times of a certain blockor a certain page within the non-volatile memory is greater than thepredetermined value, data stored in this block or the block where thepage belongs to is then renewed. Therefore, according to the method forpreventing read-disturb of a non-volatile memory provided by the presentinvention, not only chances of read-disturb is effectively suppressed,but also all data stored in the non-volatile memory may be correctlyread.

It will be apparent to those skilled in the art that variousmodifications and variations can be made to the structure of the presentinvention without departing from the scope or spirit of the invention.In view of the foregoing, it is intended that the present inventioncover modifications and variations of this invention provided they fallwithin the scope of the following claims and their equivalents.

1. A method for preventing read-disturb happened in a non-volatilememory, suitable for a non-volatile memory storage device, wherein thenon-volatile memory comprises a plurality of blocks, each blockcomprises a plurality of pages, the method comprising: storing a programcode executed by a controller of the non-volatile memory storage devicefor controlling the non-volatile memory storage device into at least afirst block of the blocks; and copying the program code stored in thefirst block into at least a second block of the blocks when power issupplied to the non-volatile memory storage device.
 2. The methodaccording to claim 1, further comprising: recording read times of thesecond block; and renewing the program code stored in the second blockwhen the read times of the second block is greater than a predeterminedvalue.
 3. The method according to claim 2, wherein the step of recordingthe read times of the second block comprises: recording the read timesof the second block by using a read times table, wherein the read timestable has a first counting value corresponding to the second block, andthe first counting value represents the read times of the second block.4. The method according to claim 3, wherein the step of renewing theprogram code stored in the second block comprises: copying the programcode stored in the second block into at least a third block within theblocks, wherein the read times table further has a second counting valuecorresponding to the third block, and the second counting valuerepresents read times of the third block; and substituting the secondblock with the third block, and renewing the first counting value. 5.The method according to claim 4, wherein the step of renewing theprogram code stored in the second block further comprises:simultaneously renewing data originally stored in at least a fourthblock adjacent to the second block, wherein the read times table furtherhas a third counting value corresponding to the fourth block, and thethird counting value represents read times of the fourth block.
 6. Acontroller, suitable for a non-volatile memory storage device, thecontroller comprising: a micro processing unit, for controlling a wholeoperation of the controller; a non-volatile memory interface,electrically coupled to the micro processing unit, used for accessingthe non-volatile memory, wherein the non-volatile memory comprises aplurality of blocks; a buffer memory, electrically coupled to the microprocessing unit, used for temporarily storing data; and a memorymanagement module, electrically coupled to the micro processing unit,used for managing the non-volatile memory, wherein the memory managementmodule applies a method for preventing read-disturb happened in thenon-volatile memory, the method comprises: storing a program codeexecuted by the controller for controlling the non-volatile memorystorage device into at least a first block of the blocks; and copyingthe program code stored in the first block into at least a second blockof the blocks when power is supplied to the non-volatile memory storagedevice.
 7. The controller according to claim 6, wherein the methodfurther comprises: recording read times of the second block; andrenewing the program code stored in the second block when the read timesof the second block is greater than a predetermined value.
 8. Thecontroller according to claim 7, wherein the step of recording the readtimes of the second block comprises: recording the read times of thesecond block by using a read times table, wherein the read times tablehas a first counting value corresponding to the second block, and thefirst counting value represents the read times of the second block. 9.The controller according to claim 8, wherein the step of renewing theprogram code stored in the second block comprises: writing the programcode stored in the second block back to the second block, and renewingthe first counting value; alternatively, copying the program code storedin the second block to at least a third block of the blocks, andsubstituting the second block with the third block, and renewing thefirst counting value; wherein the read times table further has a secondcounting value corresponding to the third block, and the second countingvalue represents read times of the third block.
 10. The controlleraccording to claim 9, wherein the step of renewing the program codestored in the second block further comprises: simultaneously renewingdata originally stored in at least a fourth block adjacent to the secondblock, wherein the read times table further has a third counting valuecorresponding to the fourth block, and the third counting valuerepresents read times of the fourth block.